Safety-critical software needs to be strictly tested according to applicable software certification standards (e.g. DO-178C for aviation software). Representative values (e.g. values in equivalence classes) and error-prone values (boundary values and abnormal ranges) are required to be tested at the requirements-level. Conventionally, these test cases are manually generated and are time-consuming.
Conventional approaches to automated test generation can capture (i.e., model) the software design requirements as a statechart. Then a state machine can implement a forward/backward propagation process to determine test vectors from the state chart. A test generator determines if a transition is reached by walking through the statechart model of the software design.
The Unified Modeling Language (UML) specification includes a standard for specifying statecharts. Other methods and descriptions of statecharts and similar finite automata have been used to describe software design and/or requirements as well, including Harel statecharts, state diagrams, and finite state machines, among others. Available off the shelf tools and techniques for generating tests using these statecharts achieve structural code coverage only. Further, the off the shelf tools may take an excessive amount of time to generate tests from a statechart.